package com.example.basic.web.service.user;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.basic.web.model.user.User;

import java.util.List;

/**
 * <p>
 * 人员管理 服务类
 * </p>
 */
public interface UserService {

    /**
     * 新增修改人员
     * @param user
     * @return
     */
    User addAndUpdate(User user);

    /**
     * 用户详情
     * @param userCode 用户编码
     * @return
     */
    User detail(String userCode);

    /**
     * 停用启用
     * @param userCode 用户编码
     * @return
     */
    Boolean enabled(String userCode);

    /**
     * 锁定解锁
     * @param userCode 用户编码
     * @return
     */
    Boolean lockUnlock(String userCode);

    /**
     * 删除
     * @param userCode 用户编码
     * @return
     */
    Boolean remove(String userCode);

    /**
     * 重置用户密码
     * @param loginName 需要重置的登录名
     * @param loginUserCode 操作人唯一代码
     * @return
     */
    Boolean resetPwd(String loginName, String loginUserCode);

    /**
     * 用户列表
     * @param queryPage 分页
     * @param searchParam 用户名/登录名
     * @param status 状态，0-全部，1-启用，2-停用，3-锁定
     * @return
     */
    IPage<User> queryList(Page<User> queryPage,  String searchParam, String status);

    /**
     * 通过登录名查询用户信息
     * @param loginName 登录名
     * @return
     */
    User queryUserByLoginName(String loginName);

    /**
     * 通过角色查询用户列表
     * @param roleCode 角色编码
     * @return
     */
    List<User> queryUserByRoleCode(String roleCode);

    /**
     * 修改密码
     * @param loginName
     * @param oriPwd 加密后的原密码
     * @param newPwd 加密后的新密码
     * @return
     */
    Boolean modifyPwd(String loginName, String oriPwd, String newPwd);
}